יש ( N ) אורחים (ממוספרים מ־0 עד ( N-1 )) שצריכים לקבל חדרים בסנטוריום. כל חדר יכול להכיל מספר כלשהו של אורחים, אך כל אורח מציין את המספר המרבי של אורחים שהוא מוכן לחלוק איתם חדר – כולל את עצמו. נתון מערך ( A ), שבו ( A[K] ) מציין את מספר האנשים המרבי שהאורח ( K ) מוכן שיהיו בחדרו. יש לכתוב פונקציה `int solution(int[] A)` שמחזירה את **מספר החדרים המינימלי** הדרוש כדי לשכן את כל האורחים בהתאם להעדפותיהם.
דוגמאות:
• ( A = [1,1,1,1,1] \Rightarrow 5 ) – כל אורח לבד.
• ( A = [2,1,4] \Rightarrow 2 ) – האורח השני לבד, האחרים יחד.
• ( A = [2,7,2,9,8] \Rightarrow 2 ).
• ( A = [7,3,1,1,4,5,4,9] \Rightarrow 4 ).
נדרש אלגוריתם יעיל ל-( N \le 100{,}000 ) ו-( A[K] \le 100{,}000 ).
שיחת טלפון עם מגייסת, נשלח מבחן בcodility שנדרש לעשות בשפת C/Cpp עם 3 שעות במשך שעתיים וחצי.
לאחר מכן נקבע ראיון טכני עם ראש צוות.
נאמר לי שהתהליך הוא ראיון טכני עם ראש צוות, ראיון טכני עם ראש קבוצה ואז ראיון HR.
שאלות מתוך הראיון
השאלות בראיון היו בשפת C.
היה שאלות למימוש כמו מחיקת איבר ברשימה מקושרת, ועוד שאלה יחסית קלה.
היתה גם שאלה של מימוש הקצאה דינמית כאשר הקלט הוא גודל הזיכרון שנדרש, ומספר נוסף המייצג alignment, ובסוף גם היה צורך בלממש שיחרור זיכרון כזה כאשר הקלט הוא רק מצביע לזיכרון שהוקצה. ניתן היה לעשות שימוש רק בmalloc.
תשובות
הוסף תשובה
|
לצפיה בתשובות
יולי 2025
הפתרון הוא להקצות גודל זיכרון נדרש + alignment + 1,
לבדוק את הכתובת ולהחזיר למשתמש את מצביע החל מכתובת שמתחלקת בalignment
ולזכור לשמור במיקום אחד לפני את הכתובת של התחילת הזיכרון המקורי שהוקצה בכדי שנדע לשחרר את כל הזיכרון שהוקצה.
עוסקת בפיתוח תוכנה לאבטחת מידע - תוכנות חומת אש ו־VPN.בסיסה הבינלאומי נמצא ברדווד סיטי, קליפורניה, ומרכזי הפיתוח נמצאים בתל אביב ובבלארוס.החברה נוסדה בשנת 1993 על ידי שלמה קרמר, מריוס נכט וגיל שוויד.